package day14;

import org.junit.Test;

import java.util.Set;
import java.util.TreeSet;

public class TestTreeSet {

    @Test
    public void test() {
        Set<Integer> set = new TreeSet<>((o1, o2) -> o2 - o1);
        set.add(1);
        set.add(1);
        set.add(2);
        set.add(2);
        set.add(3);
        set.add(3);
        set.add(4);
        System.out.println("基本类型:"+set);
    }

    @Test
    public void test2() {
        Set<String> set = new TreeSet<>();
        set.add("aaa");
        set.add("bbb");
        set.add("bbb");
        set.add("ccc");
        set.add("ddd");
        set.add("eee");
        set.add("eee");
        System.out.println(set);
    }

    //对象类型 无法排序  需要手动输入比较级对象
    @Test
    public void test3() {
        Set<Card> set = new TreeSet<>((o1, o2) -> {
            int n = o2.num-o1.num;
            //bug:TreeSet 去重规则  是排序规则结果为0
            if(n==0){
                n=o1.str.compareTo(o2.str);
            }
            return n;
        });
        set.add(new Card("♥A",14));
        set.add(new Card("♦A",14));
        set.add(new Card("♣10",10));
        set.add(new Card("♦5",5));
        set.add(new Card("🃏",16));
        System.out.println(set);
    }
}

class Card {
    String str;
    int num;

    public Card(String str, int num) {
        this.str = str;
        this.num = num;
    }

    @Override
    public String toString() {
        return str;
    }
}
